<!-- 
    对象原型(__proto__)和构造函数(prototype)原型对象里面都有一个constructor属性，constructor我们
    称之为构造函数，因为它指回构造函数本身

    constructor主要用于记录该对象引用于哪个构造函数，它可以让原型对象重新指向原来的构造函数
 -->

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function Star(uname, age) {
            this.uname = uname;
            this.age = age;

        }
        // Star.prototype.sing = function () {
        //     console.log('我会唱歌');
        // }

        // Star.prototype.movie = function () {
        //     console.log('我会演电影');
        // }

        Star.prototype = {        //这里的对象把prototype这个原型对象覆盖掉了，所有没有了

            constructor: Star, //办法指回原来的构造函数
            sing: function () {
                console.log('我唱歌');
            },
            move: function () {
                console.log('我演电影');
            }
        }

        //注意：
        //上面的注释的这种原型对象以点的方式创建的方法，相当于是追加这个方法
        //但是下面这种的这个原型对象是以赋值的方式，原本原型对象里面的有很多的属对象的属性
        //例如constructor就是，然后你给原型对象赋值，里面的很多和属性和对象全部被覆盖掉


        var ldh = new Star('刘德华', 18);
        var zxy = new Star('张学友', 19);

        // console.log(Star.prototype);
        // console.log(ldh.__proto__);
        console.log(Star.prototype.constructor);
        console.log(ldh.__proto__.constructor);




    </script>
</body>

</html>